package com.rabbit.service;

import com.github.pagehelper.PageInfo;
import com.rabbit.exception.BusinessException;
import com.rabbit.vo.req.ConfigReq;
import com.rabbit.vo.res.ConfigRes;

/**
 * <h1>参数管理业务接口</h1>
 *
 * @author zjw
 * @date 2022/1/21 14:44
 */
public interface ConfigService {

    /**
     * 参数管理列表查询
     *
     * @param configReq 查询条件
     * @return PageInfo<ConfigRes> 分页对象
     */
    PageInfo<ConfigRes> queryConfigList(ConfigReq configReq);

    /**
     * 删除参数
     *
     * @param configReq 需要删除的参数
     */
    void deleteConfig(ConfigReq configReq);

    /**
     * 根据参数编号查询参数
     *
     * @param configId 参数编号
     * @return ConfigRes
     */
    ConfigRes queryConfigById(Long configId);

    /**
     * 添加/更新时 数据校验
     *
     * @param configReq 角色添加/更新数据封装
     * @param operType  操作类型 1新增 2修改
     * @throws BusinessException 业务异常
     */
    void checkUnique(ConfigReq configReq, int operType) throws BusinessException;

    /**
     * 添加参数
     *
     * @param configReq 参数信息
     */
    void addConfig(ConfigReq configReq);

    /**
     * 更新参数
     *
     * @param configReq 参数信息
     */
    void updateConfig(ConfigReq configReq);

    /**
     * 刷新Config缓存
     */
    void refreshCache();
}
